/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package estsapp.entidades;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

/**
 *
 * @author diego
 */
@Entity
public class Material extends Pieza implements Serializable {

    @OneToMany(mappedBy = "material")
    @Cascade(CascadeType.ALL)
    private List<Precio> precios;
    private Float tamaño;
    private String unidadMedida;
    @ManyToOne
    private TipoMaterial tipo;
    private Float costoPedido;
    

    public Float getTamaño() {
        return tamaño;
    }

    public void setTamaño(Float tamaño) {
        this.tamaño = tamaño;
    }

    public String getUnidadMedida() {
        return unidadMedida;
    }

    public void setUnidadMedida(String unidadMedida) {
        this.unidadMedida = unidadMedida;
    }

    public TipoMaterial getTipo() {
        return tipo;
    }

    public void setTipo(TipoMaterial tipo) {
        this.tipo = tipo;
    }

    public List<Precio> getPrecios() {
        if (precios == null) {
            precios = new ArrayList<>();
        }
        return precios;
    }

    public Float getCostoPedido() {
        return costoPedido;
    }

    public void setCostoPedido(Float costoPedido) {
        this.costoPedido = costoPedido;
    }

    public Precio getMenorPrecio() {
        Precio menor = precios.get(0);
        for (Precio precio : precios) {
            if (precio.getMonto() < menor.getMonto()) {
                menor = precio;
            }
        }
        return menor;
    }

    public Float getPrecioUnitario() {
        Float precioUnitario;
        Float precioMat = getMenorPrecio().getMonto();
        precioUnitario = precioMat / tamaño;
        return precioUnitario;
    }

    public void addPrecio(Precio precio) {
        if (precios == null) {
            precios = new ArrayList<>();
        }
        precio.setMaterial(this);
        precios.add(precio);
    }

    public void setPrecios(List<Precio> precios) {
        this.precios = precios;
        for (Precio precio : precios) {
            precio.setMaterial(this);
        }
    }

    @Override
    public String toString() {
        return "estructurassa.entidades.Material[ id=" + getId() + " ]";
    }
}
